package main

import "fmt"

func main() {
    var a = [9]int{1,2,3,4,5,6,7,8,9}
    var b []int
    b = a[1:6]
    fmt.Println(b)
    //fmt.Println(b[6])// index out of range
    b = append(b, 1, 1) // append return another slice
    fmt.Println(len(b))
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println("===================================")
    //append函数会改变slice所引用的数组的内容，从而影响到引用同一数组的
    //其它slice。 但当slice中没有剩余空间（即(cap-len) == 0）时，此时将
    //动态分配新的数组空间。返回的slice数组指针将指向这个空间，而原数组
    //的内容将保持不变；其它引用此数组的slice则不受影响。
    b = append(b, 1, 1)
    fmt.Println(a)
    fmt.Println(b)
}
